package cz.muni.fi.pa165.pokemon.dao;

import cz.muni.fi.pa165.pokemon.entity.Badge;
import cz.muni.fi.pa165.pokemon.entity.Stadium;
import java.util.List;

/**
 *
 * @author xmravec1
 */
public interface StadiumDAO {
    
    /**
     * Method creates new stadium entity using parameter
     * stadium of type Stadium.
     * 
     * @param stadium 
     */
    void create(Stadium stadium);
    
    /**
     * Method finds stadium in database using 
     * stadium id.
     * 
     * @param id - unique identification Long number 
     * @return stadium 
     */
    Stadium get(Long id);
    
    /**
     * Method updates given stadium information in database.
     * 
     * @param stadium - Stadium type parameter to be updated
     */
    void update(Stadium stadium);
    
    /**
     * Removes given stadium from database.
     * 
     * @param stadium - Stadium type parameter to be removed
     */
    void remove(Stadium stadium);
    
    /**
     * Method returns all stadiums from database.
     * 
     * @return Collection of all stadiums
     */
    List<Stadium> findAll();
    
    /**
     * Method looks for given badge his stadiums in database
     * and returns collection of found stadiums with given badge.
     * 
     * @param name
     * @return Collection of stadiums with given badge
     */
    List<Stadium> findByBadge(Badge badge);
}
